The development of digital media content sharing and Internet networking has enabled many features to enhance the user experience. For example, on the Internet, content hosting websites and content sharing services allow users to upload, view and share digital media content, which may include audio/music clips, video clips and combination of audio and video content. A viewer can view the media content that is streamed from a content sharing server to a viewing device for playback. To prevent buffering that disrupts the playback of the media content playback, the content may be streamed with an adaptive bitrate protocol such as HTTP Live Streaming (HLS).
HLS is a network protocol for streaming audio and video over HTTP from a web server for playback on various computing devices, where the quality of the streaming content can be changed depending on the network connection of the viewing device. However, existing HLS based solutions for streaming media playback face a number of challenges. The first challenge is high latency. For example, existing HLS based solutions require a client device to make three round trips to a content sharing server before the client device can play back any video content. The three round trips include a trip to fetch a master playlist, one trip for a media playlist and one trip for an initial media segment. Such requirement substantially increases the latency for content playback especially in situations where the round trip time (RTT) is high such as on wireless networks.
Existing solutions for streaming media playback, e.g., HLS or DASH, also lack client control over stream selection when the media player used by a client does not support streams selection. For example, clients using such a media player for streaming video using HLS protocol are unable to control which media segments to fetch and when to fetch them. If a streaming video is available in multiple bitrates or resolutions, the clients are required to provide a master playlist URL to a media player, where the master playlist contains all available media playlists, each of which corresponds to a representation of the streaming video in a specific bitrate or resolution. During the playback, the media player decides which representation of the streaming video to choose for playback.
Furthermore, existing solutions for streaming video content playback are not efficient to support live video streaming. During live playbacks of streaming media, the client of existing HLS based streaming video solutions need to re-fetch the live playlist every several seconds for new media segments. If the client is permitted to seek back in time, the live media playlist must contain the entire sought duration of the content, which makes the live media playlist large to store, increasing the cost to store and parse the playlist.